C语言数据类型及typedef下的uint8 您所在的位置:网站首页 typedefine unsigned char C语言数据类型及typedef下的uint8

C语言数据类型及typedef下的uint8

2024-07-09 14:19| 来源: 网络整理| 查看: 265

文章目录 前言一、C语言基本数据类型二、数据类型在不同编译器下存在的字长差异三、uint8_t / uint16_t / uint32_t /uint64_t的来源和作用四、typedef的用法及与define的区别总结

前言

在基于C语言的代码中总能看到uint8_t / uint16_t / uint32_t /uint64_t的身影。如:uint32_t a = 300; 但它似乎又不属于C语言中的6种基本数据类型(short、int、long、char、float、double),那么它是一种新的数据类型?

本文以这个问题为切入点,回顾了C语言中的6种基本数据类型;描述了数据类型在不同编译器、平台存在的字长差异;进而引出了uint8_t / uint16_t / uint32_t /uint64_t的来源和作用;最后介绍了typedef的用法及与define的区别。

一、C语言基本数据类型

C语言共有6种基本数据类型,分别是:

1)整型:short、int、long;

2)浮点型:float、double;

3)字符类型:char。

二、数据类型在不同编译器下存在的字长差异

C语言的6种基本数据类型中,int类型(整型-short、int、long)比较特殊,其具体的字节数同机器字长和编译器有关。下面对比数据类型在16位、32位、64位编译器下的字节长度,用sizeof( )函数得出。

注: ① 这里的编译器位数指的是编译生成的软件(应用程序)的位数; ② char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码。

16位编译器:

char // 1个字节 char* // 2个字节(*指针变量) // 16位的寻址空间是2^16, 即16个bit,即2字节。(32位、64位编译器同理) short int // 2个字节 int // 2个字节 unsigned int // 2个字节 无符号整型 float // 4个字节 double // 8个字节 long // 4个字节 long long // 8个字节 unsigned long // 4个字节

32位编译器:

char // 1个字节 char* // 4个字节(*指针变量)(16&32&64位机各不相同) short int // 2个字节 int // 4个字节(16位-2B,32&64位-4B(Byte)) unsigned int // 4个字节(16位-2B,32&64位-4B) float // 4个字节 double // 8个字节 long // 4个字节(16&32位-4B,64位-8B) long long // 8个字节 unsigned long // 4个字节(16&32位-4B,64位-8B)

64位编译器:

char // 1个字节 char* // 8个字节 short int // 2个字节 int // 4个字节 unsigned int // 4个字节 float // 4个字节 double // 8个字节 long // 8个字节 long long // 8个字节 unsigned long // 8个字节

如上所示,int,long int,short int的数据位宽与编译器有关。但存在以下原则(ANSI/ISO制订),即 1) sizeof(short int)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有